home *** CD-ROM | disk | FTP | other *** search
/ The X-Philes (2nd Revision) / The X-Philes Number 1 (1995).iso / xphiles / hp48hor2 / bond.src < prev    next >
Text File  |  1992-08-18  |  4KB  |  145 lines

  1. %%HP: T(3)A(D)F(.);
  2. @ BOND by Chris Tham
  3. DIR
  4.   GO
  5.     \<< BDISP BMENU TMENU \>>
  6.   SETTLE 22.111991
  7.   MATUR 15.112
  8.   CPN 12
  9.   YIELD 10.5
  10.   BPRICE 108.812374617
  11.   EXINT 15
  12.   FREQ 2
  13.   BOND
  14.     \<<
  15.       IF N 1 <
  16.       THEN 100 CPN FREQ / + YIELD 100 / FREQ / F * D / 1 + /
  17.       ELSE CPN FREQ / YIELD 100 / FREQ / DUP 1 + INV DUP N ^ \-> G I V VN
  18. 'V^(F/D)*(G*(X+(1-VN)/I)+100*VN)'
  19.       END
  20.     \>>
  21.   ACCR
  22.     \<< CPN FREQ / D F - D / * \>>
  23.   DUR
  24.     \<< CPN FREQ / YIELD 100 / FREQ / DUP 1 + INV DUP N ^ F D / \-> G I V VN FD
  25. 'V^FD/FREQ*(G/I*((1-VN)/(I*V)-N*VN)+G*FD*(X+(1-VN)/I)+100*(N+FD)*VN)/BOND'
  26.     \>>
  27.   MDUR
  28.     \<< DUR YIELD 100 / FREQ / 1 + / \>>
  29.   CONVEX
  30.     \<< CPN FREQ / YIELD 100 / FREQ / DUP 1 + INV F D / \-> G I V FD
  31. 'V^(FD+2)*(G*\GS(J=0,N,(J+F/D)*(J+FD+1)*V^J)+100*(N+F/D)*(N+F/D+1)*V^
  32. N)/BOND/FREQ/FREQ'
  33.     \>>
  34.   DISPER
  35.     \<< DUR DUP DUP * SWAP FREQ / + CONVEX YIELD 100 / FREQ / 1 + DUP * *
  36. SWAP - \v/
  37.     \>>
  38.   PVBP
  39.     \<< BOND .01 'YIELD' STO+ BOND - -.01 'YIELD' STO+ \>>
  40.   YAPPROX
  41.     \<< CPN FREQ / 100 BPRICE - N F D / + / + 100 BPRICE + 2 / / 100 * FREQ *
  42.     \>>
  43.   Bpar
  44.     \<< -12 FREQ / MATUR DMY\-> DROP DROP SETTLE DMY\-> DROP DROP -
  45.       IF DUP 1 >
  46.       THEN 1 - DUP NEG MATUR SWAP YADD SWAP FREQ * 1 -
  47.       ELSE DROP MATUR -1
  48.       END 'N' STO \-> M C
  49.       \<< C
  50.         WHILE DUP SETTLE DDAYS 0 <
  51.         REPEAT DUP 'C' STO M MADD 'N' INCR DROP
  52.         END C DDAYS 'D' STO SETTLE C DDAYS DUP 'F' STO EXINT \>= 1 0 IFTE
  53. 'X' STO
  54.       \>>
  55.     \>>
  56.   D 182
  57.   F 175
  58.   N 17
  59.   X 1
  60.  
  61.   BMENU {
  62.  { "SETTLE" {
  63.     \<< 'SETTLE' STO BDISP \>>
  64.     \<< BDISP \>>
  65.     \<< SETTLE "Settle" \->TAG \>> } }
  66.  { "MATUR" {
  67.     \<< 'MATUR' STO BDISP \>>
  68.     \<< BDISP \>>
  69.     \<< MATUR "Mat" \->TAG \>> } }
  70.  { "CPN" {
  71.     \<< 'CPN' STO BDISP \>>
  72.     \<< BDISP \>>
  73.     \<< CPN "Coupon" \->TAG \>> } }
  74.  { "YIELD" {
  75.     \<< 'YIELD' STO BDISP \>>
  76.     \<< Bpar 'BOND- BPRICE' 'YIELD' YAPPROX ROOT DROP BDISP \>>
  77.     \<< YIELD "Yield" \->TAG \>> } }
  78.  { "PRICE" {
  79.     \<< 'BPRICE' STO BDISP \>>
  80.     \<< Bpar BOND 'BPRICE' STO BDISP \>>
  81.     \<< BPRICE "Price" \->TAG \>> } }
  82.  { "RBA" \<< RDISP BDISP \>> }
  83.  { "CAPL" \<< Bpar BOND ACCR - "Capital" \->TAG \>> }
  84.  { "ACCR" \<< Bpar ACCR "AccrInt" \->TAG \>> }
  85.  { "DUR" \<< Bpar DUR "Dur" \->TAG \>> }
  86.  { "MDUR" \<< Bpar MDUR "MDur" \->TAG \>> }
  87.  { "CONV" \<< Bpar CONVEX "Convexity" \->TAG \>> }
  88.  { "DISPR" \<< Bpar DISPER "Dispersion" \->TAG \>> }
  89.  { "PVBP" \<< Bpar PVBP "PVBP" \->TAG \>> }
  90.     FREQ EXINT }
  91.  
  92.   RDISP
  93.     \<< RCLF STD CLLCD Bpar "n " N \->STR + 1 DISP
  94. "f " F \->STR + 2 DISP
  95. "d " D \->STR + 3 DISP
  96. "x " X \->STR + 4 DISP
  97. "g " CPN FREQ / \->STR + 5 DISP
  98. YIELD 100 / FREQ / "i " OVER \->STR + 6 DISP
  99. "v " SWAP 1 + INV \->STR + 7 DISP
  100. STOF 0 WAIT DROP
  101.     \>>
  102.   BDISP
  103.     \<< CLLCD RCLF "Settlement " SETTLE DSTR + 3 DISP
  104. "Maturity   " MATUR DSTR + 4 DISP
  105. "Coupon     " 2 FIX CPN \->STR + "%" + 5 DISP
  106. "Yield      " 3 FIX YIELD \->STR + "%" + 6 DISP
  107. "Bond Price " BPRICE \->STR + 7 DISP
  108. 2 FREEZE STOF
  109.     \>>
  110.   DSTR
  111.     \<< RCLF SWAP DMY\-> STD \->STR "-" +
  112. { "Jan" "Feb" "Mar" "Apr" "May" "Jun" "Jul" "Aug" "Sep" "Oct" "Nov" "Dec" }
  113. ROT GET + "-" + SWAP + SWAP STOF
  114.     \>>
  115.   YADD
  116.     \<< SWAP DMY\-> \-> Y1 Y M D
  117.       \<< Y Y1 + M D \->DMY
  118.       \>>
  119.     \>>
  120.   MADD
  121.     \<< SWAP DMY\-> \-> M1 Y M D
  122.       \<< M M1 +
  123.         WHILE DUP 1 <
  124.         REPEAT 12 + 'Y' DECR DROP
  125.         END
  126.         WHILE DUP 12 >
  127.         REPEAT 12 - 'Y' INCR DROP
  128.         END Y SWAP D \->DMY
  129.       \>>
  130.     \>>
  131.   \->DMY
  132.     \<< \-> Y M D
  133.       \<< Y 10000 / M + 100 / D +
  134.       \>>
  135.     \>>
  136.   DMY\->
  137.     \<< \-> D
  138.       \<< D IP D FP 100 * DUP IP SWAP FP 10000 * 3 ROLLD
  139.         IF -42 FS?
  140.         THEN SWAP
  141.         END
  142.       \>>
  143.     \>>
  144. END
  145.